//
// Created by zengyuhao on 25-8-17.
//

#ifndef DIFFERENTIAL_KINEMATICS_DOT_H
#define DIFFERENTIAL_KINEMATICS_DOT_H
#include "basic_data_structure.hpp"
#include "forward_kinematics.hpp"
#include "robot_model.hpp"

namespace ZORAL
{
    class DifferentialKinematicsDot
    {
    private:
        std::shared_ptr<ForwardKinematics> fk_;
        std::shared_ptr<RobotModel> rm_;

    public:
        explicit DifferentialKinematicsDot(std::shared_ptr<ForwardKinematics> fk)
        {
            fk_ = std::move(fk);
            rm_ = fk_->getRobotModel();
        }

        static int calJacobianDot(const VectorXd &q, const VectorXd &qd, const bool &relate_to_base, Jacobian &jac_dot);
    };
} // namespace ZORAL
#endif // DIFFERENTIAL_KINEMATICS_DOT_H
